package edu.unmsm.ocaa.sisocaa.integracion.dao.impl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
import org.springframework.stereotype.Repository;

import com.ibatis.sqlmap.client.SqlMapClient;

import edu.unmsm.ocaa.sisocaa.integracion.dao.FichaDAO;
import edu.unmsm.ocaa.sisocaa.negocio.model.dto.FichaDTO;

@Repository
public class FichaDAOImpl extends SqlMapClientDaoSupport implements FichaDAO {

	@Autowired
	public FichaDAOImpl(SqlMapClient sqlmap) {
		super.setSqlMapClient(sqlmap);
		// TODO Auto-generated constructor stub
	}

	public FichaDTO getFicha(Integer idFicha) throws DataAccessException {
		// TODO Auto-generated method stub
		return (FichaDTO)getSqlMapClientTemplate().queryForObject("getFicha", idFicha);
	}

	public List<FichaDTO> getFichas(Integer id_dep) throws DataAccessException {
		// TODO Auto-generated method stub
		Map map=new HashMap();
		map.put("id_dep", id_dep);
		return (List<FichaDTO>)getSqlMapClientTemplate().queryForList("getFichas", map);
	}

	public void insertFicha(FichaDTO ficha) throws DataAccessException {
		// TODO Auto-generated method stub
		try {
			getSqlMapClientTemplate().insert("insertFicha",ficha);	
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
	}

	public void updateFicha(FichaDTO ficha) throws DataAccessException {
		// TODO Auto-generated method stub
		try {
			getSqlMapClientTemplate().update("updateFicha",ficha);	
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		
	}

	public FichaDTO getMaxFicha() throws DataAccessException {
		// TODO Auto-generated method stub
		return (FichaDTO)getSqlMapClientTemplate().queryForObject("getMaxFicha");
	}

	@Override
	public List<FichaDTO> getFichaxTipo(Integer idTipo, Integer id_dep)
			throws DataAccessException {
		// TODO Auto-generated method stub
		Map map=new HashMap();
		map.put("idTipo", idTipo);
		map.put("id_dep", id_dep);
		return (List<FichaDTO>)getSqlMapClientTemplate().queryForList("getFichaporTipo", map);
	}

	@Override
	public List<FichaDTO> getFichaxTipoDyDscFicha(String dscTipoper,
			String dscFicha) {
		// TODO Auto-generated method stub
		Map map=new HashMap();
		map.put("dsctipper", dscTipoper);
		map.put("dscFicha", dscFicha);
		return (List<FichaDTO>)getSqlMapClientTemplate().queryForList("getFichaDTipoyDscFicha", map);
	}

	@Override
	public Integer countFichaxTipo(Integer tipUsu) throws DataAccessException {
		return (Integer)getSqlMapClientTemplate().queryForObject("getFichaporTipoGeneral",tipUsu);
	}

	@Override
	public Integer countServxFichaResp(Integer idFicha) {
		// TODO Auto-generated method stub
		return (Integer)getSqlMapClientTemplate().queryForObject("getTotalServxFichaResp", idFicha);
	}

	@Override
	public void deleteFicha(Integer id_ficha) throws DataAccessException {
		// TODO Auto-generated method stub
		getSqlMapClientTemplate().delete("deleteFicha", id_ficha);
	}

}
